A virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system (e.g., a server, a mainframe computer, etc.). The actual physical computer system is typically referred to as a “host machine,” and the operating system of the host machine is typically referred to as the “host operating system.” Typically, software on the host machine known as a “hypervisor” (or a “virtual machine monitor”) manages the execution of one or more virtual machines or “guests”, providing a variety of functions such as virtualizing and allocating resources, context switching among virtual machines, etc. The operating system of the virtual machine is typically referred to as the “guest operating system.”
One resource managed by the host machine is a networking device that may be used by multiple virtual machines operating at the same time. Each virtual machine is assigned a different and unique network address, such as a virtual LAN (VLAN) tag and/or a media access control (MAC) address, or some other combination of data in a packet header. The networking device can have multiple queues for managing incoming packets to be received by a virtual machine and outgoing packets transmitted by a virtual machine. Dedicated queues may be used which are mapped to a specific hardware address and dedicated to a specific virtual machine. In addition, shared queues may be employed which are shared by multiple virtual machines.